package juego.tipos;

public class Poder{
	private int energia;	
	private int energiaMax;

	//Inicializa una nueva instancia usando capacidad
	//como valor de energiaMax y energia.
	public Poder(int capacidad){
		this.energia = capacidad;
		this.energiaMax = capacidad;		
	}
	
	protected Poder(){}

	private void setEnergia(int valor){
		if (valor > energiaMax){valor= energiaMax;}
		this.energia=valor;		
	}
	
	public void setMaxEnergia(int valor){
		energiaMax=valor;
		setEnergia(energia);
	}

	public int getEnergia(){	
		return energia;
	}

//**************************************************
	
	//Devuelve cuanto queda de la otra energia al enfrentarse con este poder.
	protected int enfrentaEnergia(int otraEnergia){
		return otraEnergia - this.energia;
	}

	//Devuelve true si la energia es nula.
	public boolean agotado(){
		return (energia == 0);		
	}
	
	//Devuelve otra instancia de poder 
	//en el mismo estado que el receptor.
	public Poder copiar(){
		Poder tmp = new Poder(energiaMax);
		tmp.setEnergia(this.energia);
		return tmp;
	}
	
	//La energia del receptor se diminuye segun la energia del 
	//parametro.
	public void enfrentar(Poder otro){
		this.setEnergia(otro.enfrentaEnergia(this.energia));
		if (energia < 0){
			energia=0;}			//no quiero que la energia quede negativa en este caso.
							//pero no se analiza en el set, puesto se necesita poder
							//setear valores negativos.
	}

	public void set(Poder otroPoder){
		this.energiaMax = otroPoder.energiaMax;
		this.energia  = otroPoder.getEnergia();
	}
	
}

